// pages/payment/payment.js
const orderApi = require('../../api/order');
const userApi = require('../../api/user');
const cartApi = require('../../api/cart');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    orderData: null, // 订单数据
    orderSummary: '', // 订单摘要
    currentPayMethod: 'wxpay', // 当前选择的支付方式
    showPaymentResult: false, // 是否显示支付结果
    paymentSuccess: false, // 支付是否成功
    paymentMessage: '', // 支付结果信息
    orderId: '' // 订单ID
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.id) {
      // 从API获取订单数据
      this.getOrderData(options.id);
    } else {
      wx.showToast({
        title: '订单数据不存在',
        icon: 'none',
        success: () => {
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        }
      });
    }
  },
  
  /**
   * 获取订单数据
   */
  getOrderData(orderId) {
    wx.showLoading({
      title: '加载订单信息',
      mask: true
    });
    
    orderApi.getOrderDetail(orderId).then(res => {
      wx.hideLoading();
      
      if (res.code === 1 && res.data) {
        // 处理订单数据
        const orderData = {
          id: res.data.id,
          orderNo: res.data.number,
          dishes: res.data.orderDetailList || [],
          totalPrice: res.data.amount - (res.data.deliveryFee || 5),  // 商品总价 = 总金额 - 配送费
          deliveryFee: res.data.deliveryFee || 5,  // 配送费，如果后端未返回则默认5元
          discount: res.data.discount || 0,  // 优惠金额
          totalAmount: res.data.amount,  // 实付金额
          address: {
            address: res.data.address,
            name: res.data.consignee,
            phone: res.data.phone
          },
          remark: res.data.remark || '',  // 订单备注
          orderTime: res.data.orderTime,  // 下单时间
          status: res.data.status  // 订单状态
        };
        
        // 生成订单摘要
        let orderSummary = '';
        if (orderData.dishes && orderData.dishes.length > 0) {
          orderSummary = orderData.dishes.map(dish => dish.name).join('、');
          if (orderData.dishes.length > 3) {
            orderSummary = orderData.dishes.slice(0, 3).map(dish => dish.name).join('、') + '等' + orderData.dishes.length + '件商品';
          }
        }
        
        this.setData({
          orderData,
          orderSummary
        });
        
      } else {
        wx.showToast({
          title: res.msg || '获取订单数据失败',
          icon: 'none',
          success: () => {
            setTimeout(() => {
              wx.navigateBack();
            }, 1500);
          }
        });
      }
    }).catch(err => {
      console.error('获取订单数据失败:', err);
      wx.hideLoading();
      wx.showToast({
        title: '获取订单数据失败',
        icon: 'none',
        success: () => {
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        }
      });
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 如果页面重新显示且有订单ID，刷新订单数据
    if (this.data.orderData && this.data.orderData.id) {
      this.getOrderData(this.data.orderData.id);
    }
  },

  // 选择支付方式
  selectPayMethod(e) {
    const method = e.currentTarget.dataset.method;
    this.setData({
      currentPayMethod: method
    });
  },

  // 提交支付
  submitPayment() {
    const { orderData, currentPayMethod } = this.data;
    
    // 检查是否选择了支付方式
    if (!currentPayMethod) {
      wx.showToast({
        title: '请选择支付方式',
        icon: 'none'
      });
      return;
    }
    

    
    // 显示加载中
    wx.showLoading({
      title: '支付处理中',
      mask: true
    });
    
    // 获取支付方式编码
    const payMethodCode = {
      'wxpay': 1, // 微信支付
      'alipay': 2 // 支付宝
    }[currentPayMethod];
    
    // 构建支付数据
    const paymentData = {
      orderNumber: orderData.orderNo,
      payMethod: payMethodCode
    };
    
    // 调用支付API
    orderApi.payOrder(paymentData).then(res => {
      wx.hideLoading();
      
      if (res.code === 1) { // 注意：业务成功状态码为1
        // 支付成功
        this.paymentSuccess(orderData.id || orderData.orderNo);
      } else {
        // 支付失败
        this.paymentFail(res.msg || '支付失败，请重试');
      }
    }).catch(err => {
      console.error('支付失败:', err);
      wx.hideLoading();
      this.paymentFail('支付请求失败，请重试');
    });
  },

  // 支付成功
  paymentSuccess(orderId) {
    // 显示支付成功
    this.setData({
      showPaymentResult: true,
      paymentSuccess: true,
      paymentMessage: '订单支付成功，商家正在准备您的美食',
      orderId
    });
    
    // 更新购物车
    this.updateCart();
  },

  // 支付失败
  paymentFail(message) {
    this.setData({
      showPaymentResult: true,
      paymentSuccess: false,
      paymentMessage: message || '支付失败，请重试'
    });
  },

  // 更新购物车（清空购物车）
  updateCart() {
    // 调用API清空购物车
    cartApi.clearCart().then(res => {
      console.log('购物车已清空');
      
      // 更新购物车角标
      if (typeof this.getTabBar === 'function' && this.getTabBar()) {
        this.getTabBar().setData({
          cartCount: 0
        });
      }
    }).catch(err => {
      console.error('清空购物车失败:', err);
    });
  },

  // 查看订单
  viewOrder() {
    wx.redirectTo({
      url: '/pages/orderDetail/orderDetail?id=' + this.data.orderId
    });
  },

  // 返回首页
  goToIndex() {
    wx.reLaunch({
      url: '/pages/index/index'
    });
  },
  
  // 添加返回按钮功能
  goBack() {
    wx.navigateBack();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})